Option Explicit

'################################################################
' Descriptor
' 表信息接口
'################################################################

'################################################################
' Function
'################################################################
' 设置别名 token
Public Sub setAliasNameToken(ByRef t As SqlToken)
End Sub

' 获取别名 token
Public Function getAliasNameToken() As SqlToken
End Function

' 获取别名
Public Function getAliasName() As String
End Function

' 读取原始的真实表名 （从 token 中读取）
Public Function getOriginTableName() As String
End Function

' 写入翻译后的真实表名
Public Sub setTranslatedTableName(ByRef name As String)
End Sub

' 读取翻译后的真实表名
Public Function getTranslatedTableName() As String
End Function

' 获取非要求类型的表名
Public Function getReverseTypeTableName() As String
End Function

' 返回当前表中的各类型列名称--列名称信息映射
' 映射的内容包括:
'    转换后名称 --> 列名称信息
'    非要求类型名称 --> 列名称信息
'    列别名(如果有的话) --> 列名称信息
' @param translateType 转换的类型(逻辑->物理=0, 物理->逻辑=1)
' @return Map<String, ISqlTranslateNameInfo>
Public Function getTableColNameInfoMap(ByRef em As ISqlEntityManager, ByVal translateType As Integer) As Object
End Function

' 在当前的表信息中搜索 colName 的名称信息
' 返回 null 表示搜索失败
' @param translateType 转换的类型(逻辑->物理=0, 物理->逻辑=1)
Public Function findColNameInfo(ByRef colName As String, ByRef em As ISqlEntityManager, ByVal translateType As Integer) As ISqlTranslateNameInfo
End Function

' 执行表信息的翻译
Public Sub translate(ByRef em As ISqlEntityManager, ByVal translateType As Integer)
End Sub

' 返回有序的列名信息
' 遇到全数据列需要主动展开
' IObjArrayRef<IObjArrayRef<ISqlTranslateNameInfo>> 额外的一层 IObjArrayRef 用来兼容
' 子查询表中的 union 中产生的多个子查询的列对象
'
' @return IObjArrayRef<IObjArrayRef<ISqlTranslateNameInfo>>
Public Function getOrderedTableColNameInfos(ByRef em As ISqlEntityManager, ByVal translateType As Integer) As IObjArrayRef
End Function